local mysql = require "lualib.mysql"
local http = require "resty.http"
local cjson = require "cjson"

local httpc 

local auth = {}

function auth.skynetchat(token)
    -- do something with token 
    local username, password = token:match("(%w+)\t(%w+)")
    -- ngx.log(ngx.ERR, username, password)
    
    local fmt = [===[
    select * from chat.users where `username` = '%s' and `password` = '%s' limit 1 
    ]===]

    local sql = string.format(fmt, username, password)

    local row = mysql.process_mysql_query(sql)

    if not row then 
        return false, nil 
    end 

    local res = row[1]
    
    if res and res.uid then 
        return true, res.uid
    end 

    return false, nil 
end 

local function do_auth(sdk_platform, token)
    local f = auth[sdk_platform]
    if f then 
        return f(token)
    end 
end 

-- local function send_http_request()
-- end

local function main()
    httpc = http.new()
    
    ngx.req.read_body()
    local postfields = ngx.req.get_post_args()
    local sdk_platform = postfields.sdk_platform
    local token = postfields.token

    local res, uid = do_auth(sdk_platform, token)

    if not res or not uid then 
        ngx.status = 500
        ngx.say("Internal Server Error")
        return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
    else 
    
        ngx.status = ngx.HTTP_OK
        ngx.say(uid)
        return ngx.exit(ngx.HTTP_OK)
    end 
end 

main()
--[[
    ngx.HTTP_OK: 表示 HTTP 状态码 200（OK）。
    ngx.HTTP_NOT_FOUND: 表示 HTTP 状态码 404（Not Found）。
    ngx.HTTP_FORBIDDEN: 表示 HTTP 状态码 403（Forbidden）。
    ngx.HTTP_BAD_REQUEST: 表示 HTTP 状态码 400（Bad Request）。
    ngx.HTTP_UNAUTHORIZED: 表示 HTTP 状态码 401（Unauthorized）。
]]